package pr.iceworld.fernando.gatecommon.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import pr.iceworld.fernando.gatecommon.service.impl.BizService;
import pr.iceworld.fernando.gatecommon.web.result.WebBaseResult;

/**
 * Created by ferna on 2018/6/12.
 */
public abstract class BaseController<Biz extends BizService, T> {
    @Autowired
    protected Biz biz;

    @PostMapping("")
    @ResponseBody
    protected WebBaseResult<T> add(T t){
        biz.insertSelective(t);
        return new WebBaseResult<T>().success();
    }

    // id 作为主键，可能有会出现 int, string 类型
//    @GetMapping("/{id}")
//    @ResponseBody
//    protected WebBaseResult<T> get(@PathVariable T id) {
//        if (id instanceof Integer) {
//            return new WebBaseResult<T>().success().data(biz.selectByPrimaryKey((Integer) id));
//        } else if (id instanceof String) {
//            return new WebBaseResult<T>().success().data(biz.selectByPrimaryKey((String) id));
//        }
//        return new WebBaseResult<T>().failure();
//    }

    @PutMapping("/{id}")
    @ResponseBody
    protected WebBaseResult<T> update(T t) {
        biz.updateByPrimaryKey(t);
        return new WebBaseResult<T>().success();
    }

//    @DeleteMapping("/{id}")
//    @ResponseBody
//    protected WebBaseResult<T> delete(@PathVariable String id) {
//        biz.deleteByPrimaryKey(id);
//        return new WebBaseResult<T>().success();
//    }
}
